package com.ly.proxy615.staticProxy;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 *
 * 所谓静态代理，就是这样一种通过代理类和被代理类实现同一个接口的方式，
 * 来提供一层薄薄的抽象，以保证调用者和内层实现者的隔离。
 *
 * 步骤:先声明一个接口定义方法
 * AB两个类共同实现此接口 两个类都重写接口方法
 * 在B类中声明代理对象A 并在方法内调用对象及方法
 *
 * 最终由B类执行实现B对A类的静态代理
 */
public class IDBProxy implements IDB {

    //实例化代理对象
    private IDBimpl idBimpl = null;

    @Override
    public String request() {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println("开始记录日志"+ format.format(new Date()));
        if (idBimpl==null){
            idBimpl = new IDBimpl();
        }
        String request = idBimpl.request();
        System.out.println("记录结束"+new Date());
        return request;
    }

    public static void main(String[] args) {
        IDBProxy idbProxy = new IDBProxy();
        idbProxy.request();
    }
}
